package com.wms.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.wms.entity.WFactory;
import com.wms.entity.WProductUnit;
import com.wms.dao.WProductUnitDao;
import com.wms.mytool.Result;
import com.wms.service.WProductUnitService;
import org.springframework.stereotype.Service;


import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 商品计量单位表(WProductUnit)表服务实现类
 *
 * @author makejava
 * @since 2023-10-20 13:21:44
 */
@Service("wProductUnitService")
public class WProductUnitServiceImpl implements WProductUnitService {
    @Resource
    private WProductUnitDao wProductUnitDao;

    /**
     * 查询所有
     * @return 实例对象
     */
    @Override
    public Result selectAll() {
        List<WProductUnit> wProductUnits = this.wProductUnitDao.selectByMap(null);
        if(wProductUnits!=null){
            return new Result(200,wProductUnits,"查询成功");
        }else {
            return new Result(400,null,"查询失败");
        }
    }

    /**
     * 添加计量单位
     * @param wProductUnit 计量单位信息
     * @return 实例对象
     */
    @Override
    public Result addProductUnit(WProductUnit wProductUnit) {
        wProductUnit.setCreateTime(new Date());
        wProductUnit.setUpdateTime(new Date());
        int i = this.wProductUnitDao.insert(wProductUnit);
        if(i==1){
            return new Result(200,i,"添加成功");
        }else{
            return new Result(400,null,"添加失败");
        }
    }

    /**
     * 修改计量单位
     * @param wProductUnit 计量单位信息
     * @return 实例对象
     */
    @Override
    public Result updateById(WProductUnit wProductUnit) {
        wProductUnit.setUpdateTime(new Date());
        int i = this.wProductUnitDao.updateById(wProductUnit);
        if(i==1){
            return new Result(200,i,"修改成功");
        }else{
            return new Result(400,null,"修改失败");
        }
    }

    /**
     * 删除计量单位
     * @param id 计量单位id
     * @return 实例对象
     */
    @Override
    public Result deleteProductUnit(Integer id) {
        try {
            QueryWrapper<WProductUnit> qw = Wrappers.query();
            qw.eq("id", id);
            int i = this.wProductUnitDao.delete(qw);
            if(i==1){
                return new Result(200,i,"删除成功");
            }else{
                return new Result(400,null,"删除失败");
            }
        }catch (Exception e){
            return new Result(400,null,"存在关联商品，不可删除");
        }

    }
}
